package model

import (
	"auth/model/entity"
)

type StoreBindUserCreateRequest struct {
	UserId int64 `json:"user_id" binding:"required"`

	StoreId int64 `json:"store_id" binding:"required"`

	RoleId int64 `json:"role_id" binding:"required"`
}

type StoreBindUserUpdateRequest struct {
	ID int64 `json:"id" validate:"required"`

	UserId *int64 `json:"user_id" `

	StoreId *int64 `json:"store_id"`

	RoleId *int64 `json:"role_id"`
}

type StoreBindUserListRequest struct {
	Index int `json:"index"`
	Size  int `json:"size"`

	UserId *int64 `json:"user_id" `

	StoreId *int64 `json:"store_id" `
}

type StoreBindUserListResponse struct {
	Total int                  `json:"total"`
	Data  []*StoreBindUserInfo `json:"data"`
}

type StoreBindUserInfo struct {
	ID int64 `json:"id"`

	UserId int64 `json:"user_id"`

	StoreId int64 `json:"store_id"`

	CreatedAt int64 `json:"created_at"`

	UpdatedAt int64 `json:"updated_at"`
}

type StoreBindUserDeleteRequest struct {
	ID int64 `json:"id"`
}

func StoreBindUsersEntityToDto(storeBindUsers []*entity.StoreBindUser) []*StoreBindUserInfo {
	out := make([]*StoreBindUserInfo, 0, len(storeBindUsers))
	for _, c := range storeBindUsers {
		out = append(out, StoreBindUserEntityToDto(c))
	}
	return out
}

func StoreBindUserEntityToDto(e *entity.StoreBindUser) *StoreBindUserInfo {
	return &StoreBindUserInfo{

		ID: e.ID,

		UserId: e.UserId,

		StoreId: e.StoreId,

		CreatedAt: e.CreatedAt,

		UpdatedAt: e.UpdatedAt,
	}
}
